/* eslint-disable no-array-constructor */
/**
 * 类型判断
 */
export function typeOf (value) {
  /* Object Array Boolean String Function Number ... */
  return Object.prototype.toString.call(value).match(/ (\S*)]/)[1]
}
/**
 * 数组删除指定元素
 * @param {*} arr
 * @param {*} ele
 * @returns
 */
export function removeArr (arr, ele) {
  const index = arr.indexOf(ele)
  if (index > -1) {
    arr.splice(index, 1)
  }
  return arr
}
/**
 *地址栏参数转对像
 * @param {*} str
 * @returns
 */
export function getQueryString (str) {
  const qs = str.split('?')[1] || ''
  const args = {}
  const items = qs.length ? qs.split('&') : []
  items.forEach((item, i) => {
    const arr = item.split('=')
    const name = decodeURIComponent(arr[0])
    const value = decodeURIComponent(arr[1])
    name.length && (args[name] = value)
  })
  return args
}
/**
 * 对象转地址栏参数
 * @param {*} params
 * @returns
 */
export function paramsToStringify (params) {
  if (params) {
    const query = []
    for (const key in params) {
      query.push(`${key}=${params[key]}`)
    }
    return `${query.join('&')}`
  } else {
    return ''
  }
}
/**
 * 身份证切割
 * @param {*}  value
 * @returns
 */
export function splitIdCard (value) {
  if (value.length === 18) {
    return (
      value.substring(6, 10) +
      '-' +
      value.substring(10, 12) +
      '-' +
      value.substring(12, 14)
    )
  } else {
    return null
  }
}
/**
 * 身份证隐藏日期
 * @param {*}  value
 * @returns
 */
export function hideIdCard (value) {
  return value.replace(/(\d{4})\d*([0-9a-zA-Z]{4})/, '$1******$2')
}
/**
 * 性别
 * @param {*}  value
 * @returns
 */
export function isSex (value) {
  return parseInt(value.substr(16, 1)) % 2 === 1 ? '男' : '女'
}
/**
 * 转换换行符
 */
export function parseBreak (str) {
  return (str || '').replace(/(\r)|(\\n)/g, '<br/>')
}
/**
 * 判断数据是否为空
 */
export function isNull (data) {
  return !!(data === '' || data === undefined || data === null)
}
/**
 * 金额格式化
 */
export function MoneyFormatting (amount) {
  if (!amount) {
    return '-'
  }
  // 强制保留两位小数
  let f = parseFloat(amount)
  if (isNaN(f)) return false
  f = Math.round(amount * 100) / 100
  let s = f.toString()
  let rs = s.indexOf('.')
  if (rs < 0) {
    rs = s.length
    s += '.'
  }
  while (s.length < rs + 1 + 2) {
    s += '0'
  }
  // 每三位用一个逗号隔开
  let leftNum = s.split('.')[0]
  const rightNum = '.' + s.split('.')[1]
  let result
  // 定义数组记录截取后的价格
  const resultArray = new Array()
  if (leftNum.length > 3) {
    let i = true
    while (i) {
      resultArray.push(leftNum.slice(-3))
      leftNum = leftNum.slice(0, leftNum.length - 3)
      if (leftNum.length < 4) {
        i = false
      }
    }
    // 由于从后向前截取，所以从最后一个开始遍历并存到一个新的数组，顺序调换
    const sortArray = new Array()
    for (let i = resultArray.length - 1; i >= 0; i--) {
      sortArray.push(resultArray[i])
    }
    result = leftNum + ',' + sortArray.join(',') + rightNum
  } else {
    result = s
  }
  return result
}

// vue3引入静态资源
export function getAssetsImages (name) {
  return new URL(`/src/assets/images/${name}`, import.meta.url).href
}
